const request = require('./request.js').default;

/**
 * 小说功能相关 API
 */
const novelAPI = {
  /**
   * 创建小说
   * @param {Object} data - 小说数据
   * @param {string} data.title - 小说标题
   * @param {string} data.description - 小说简介
   * @param {string} data.tags - 标签
   * @param {string} data.coverUrl - 封面URL（可选）
   * @param {number} data.creationType - 创作类型（1-单人，2-多人）
   * @param {number} data.targetChapterCount - 目标章节数（多人创作时）
   */
  createNovel: (data) => request('/novel/create', 'POST', data),

  /**
   * 查询小说基本信息
   * @param {string|number} novelId - 小说ID
   */
  getNovelById: (novelId) => request(`/novel/${novelId}`, 'GET'),

  /**
   * 查询小说详细信息（包含统计数据和用户交互状态）
   * @param {string|number} novelId - 小说ID
   */
  getNovelDetail: (novelId) => request(`/novel/${novelId}/enhanced`, 'GET'),

  /**
   * 更新小说信息
   * @param {Object} data - 小说数据
   */
  updateNovel: (data) => request('/novel/update', 'PUT', data),

  /**
   * 完结小说
   * @param {string|number} novelId - 小说ID
   */
  completeNovel: (novelId) => request(`/novel/${novelId}/complete`, 'POST'),

  /**
   * 发起完结投票
   * @param {string|number} novelId - 小说ID
   */
  initiateCompleteVote: (novelId) => request(`/novel/${novelId}/complete/vote`, 'POST'),

  /**
   * 投票同意完结
   * @param {string|number} novelId - 小说ID
   */
  voteForComplete: (novelId) => request(`/novel/${novelId}/complete/vote/agree`, 'POST'),

  /**
   * 投票反对完结
   * @param {string|number} novelId - 小说ID
   */
  voteAgainstComplete: (novelId) => request(`/novel/${novelId}/complete/vote/oppose`, 'POST'),

  /**
   * 获取完结投票状态
   * @param {string|number} novelId - 小说ID
   */
  getCompleteVoteStatus: (novelId) => request(`/novel/${novelId}/complete/vote/status`, 'GET'),

  /**
   * 取消完结投票（仅发起者可取消）
   * @param {string|number} novelId - 小说ID
   */
  cancelCompleteVote: (novelId) => request(`/novel/${novelId}/complete/vote/cancel`, 'POST'),

  /**
   * 获取我参与的小说列表
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页数量
   */
  getMyParticipatedNovels: (params = {}) => {
    const { page = 1, pageSize = 10 } = params;
    return request('/novel/my-participated', 'GET', null, { page, pageSize });
  },

  /**
   * 获取正在招募的小说列表
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页数量
   */
  getRecruitingNovels: (params = {}) => {
    const { page = 1, pageSize = 10 } = params;
    return request('/novel/recruiting', 'GET', null, { page, pageSize });
  },

  /**
   * 获取已完结小说列表（按热度排序）
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页数量
   */
  getCompletedNovels: (params = {}) => {
    const { page = 1, pageSize = 10 } = params;
    return request('/novel/completed', 'GET', null, { page, pageSize });
  },

  /**
   * 加入小说创作
   * @param {string|number} novelId - 小说ID
   */
  joinNovel: (novelId) => request(`/novel/${novelId}/join`, 'POST'),

  /**
   * 查询小说参与者列表
   * @param {string|number} novelId - 小说ID
   */
  getNovelParticipants: (novelId) => request(`/novel/${novelId}/participants`, 'GET'),

  /**
   * 写新章节
   * @param {Object} data - 章节数据
   * @param {string|number} data.novelId - 小说ID
   * @param {string} data.title - 章节标题
   * @param {string} data.content - 章节内容
   */
  writeChapter: (data) => request('/novel/chapter/write', 'POST', data),

  /**
   * 查询小说章节列表
   * @param {string|number} novelId - 小说ID
   */
  getNovelChapters: (novelId) => request(`/novel/${novelId}/chapters`, 'GET'),

  /**
   * 查询章节详细信息
   * @param {string|number} chapterId - 章节ID
   */
  getChapterDetail: (chapterId) => request(`/novel/chapter/${chapterId}`, 'GET'),

  /**
   * 检查是否可以写下一章
   * @param {string|number} novelId - 小说ID
   */
  canWriteNextChapter: (novelId) => request(`/novel/${novelId}/can-write`, 'GET')
};

module.exports = {
  novelAPI
};
